package cn.twh.wall.beetl.tag;

import lombok.extern.slf4j.Slf4j;
import org.beetl.core.exception.BeetlException;
import org.beetl.ext.tag.IncludeTag;

/**
 * include 某个文件，如果模板存在则引入，不存在则使用默认的。【默认的不存在则抛出异常】
 * 父类参数 ： 1：模板名称 2： 额外参数
 * 本类增加参数 ： 3： 默认模板
 * 不满足3参数时与原始include一致
 *
 * @author TWH
 */
@Slf4j
public class IncludeWithDefaultTag extends IncludeTag {

    @Override
    public void render() {
        if (this.args.length == 3) {
            Object useDefault = this.args[2];
            this.args = new Object[]{this.args[0], this.args[1]};
            try {
                super.render();
            } catch (BeetlException e) {
                if (useDefault.equals(this.args[0])) {
                    throw e;
                } else {
                    if (BeetlException.TEMPLATE_LOAD_ERROR.equals(e.detailCode)) {
                        this.args[0] = useDefault;
                        super.render();
                    } else {
                        throw e;
                    }
                }
            }
        } else {
            super.render();
        }
    }
}
